import router from "/@/router"
import {ElMessage} from "element-plus"
// @ts-ignore
import NProgress from "nprogress"
import "nprogress/nprogress.css"
import {UserVo} from "/@/api/openapi";
import {whiteList} from "/@/config/white-list";
import {global} from "/@/config/global";
// import {useUserStore} from "/@/store";
import {getUserStore} from "/@/store/modules/user";

const user = getUserStore()
NProgress.configure({showSpinner: false})
/** 守护路由，方式其他人没有进入直接开始登录 */
router.beforeEach(async (to, _from, next) => {
    NProgress.start()
    console.log("开始校验")
    const token = localStorage.getItem(global.USER);
    console.log("用户token" + token)
    // 判断该用户是否登录
    if (token) {
        // 如果获取到了 token 信息
        if (to.path === "/login") {
            // 如果已经登录，并准备进入 Login 页面，则重定向到主页
            next({path: "/"})
            NProgress.done()
        } else {
            // 检查用户是否已获得其权限角色
            // @ts-ignore
            let userInfo: UserVo = {};
            // const jsonInfo = localStorage.getItem(global.USERINFO);
            // if (jsonInfo === null || jsonInfo === undefined || jsonInfo === '') {
            //     console.log("用户信息未存储"+jsonInfo)
            //     localStorage.removeItem(global.USER)
            //     localStorage.removeItem(global.USERINFO);
            //     next("/login");
            // } else {
            //     try {
            //         console.log("解析用户")
            //         userInfo = JSON.parse(jsonInfo);
            //         console.log(userInfo)
            //         if (userInfo === null || userInfo === undefined) {
            //             console.log("解析用户失败")
            //             localStorage.removeItem(global.USER)
            //             localStorage.removeItem(global.USERINFO);
            //             next("/login");
            //         }
            //     } catch (e) {
            //         console.log("解析用户报错")
            //         localStorage.removeItem(global.USER)
            //         localStorage.removeItem(global.USERINFO);
            //         next("/login");
            //     }
            // }
            console.log("权限通过")
            next()
            // if (userInfo.userRole === 'admin') {
            //     console.log("管理员用户，直接跳转")
            //     next()
            // } else {
            //     // 如果是普通用户
            //     try {
            //         // 确保添加路由已完成
            //         // 设置 replace: true, 因此导航将不会留下历史记录
            //         next({...to, replace: true})
            //     } catch (err: any) {
            //         // 过程中发生任何错误，都直接重置 Token，并重定向到登录页面
            //         ElMessage.error(err.message || "路由守卫过程发生错误")
            //         next("/login")
            //         NProgress.done()
            //     }
            // }
        }
    } else {
        console.log("未登录")
        // 如果没有 Token
        if (whiteList.indexOf(to.path) !== -1) {
            // 如果在免登录的白名单中，则直接进入
            next()
        } else {
            // 其他没有访问权限的页面将被重定向到登录页面
            next("/login")
            NProgress.done()
        }
    }
})

router.afterEach(() => {
    NProgress.done()
})
